<?php
namespace backend\controllers;

use Yii;
use yii\web\Controller;
use yii\filters\VerbFilter;

/**
 * 基类控制器，作为控制器中间层
 *
 * @author jois
 */
class BaseController extends Controller
{

    public $layout = 'main';

    /**
     * 行为过滤 ，仅公共方法过滤
     * 如要在子类控制器中过滤，可以在子类控制器中加上behaviors，或者在各function中throw MethodNotAllowedHttpException]
     */
    public function behaviors()
    {
        return [
            'verbs' => [
                'class' => VerbFilter::className(),
                'actions' => [
                    'logout' => [
                        'get'
                    ],
                    'save' => [
                        'post'
                    ],
                    'index' => [
                        'get'
                    ],
                    'edit' => [
                        'get'
                    ],
                    'delete' => [
                        'post'
                    ],
                    'upload' => [
                        'post'
                    ]
                ]
            ]
        ];
    }

    /**
     * 在程序执行之前，对访问的方法进行权限验证.
     *
     * @param \yii\base\Action $action
     */
    public function beforeAction($action)
    {
        // 如果未登录，则直接返回，加入登录页面的忽略，要不会请求死循环
        if (is_null(Yii::$app->session['userid']) && Yii::$app->request->pathInfo != 'user/login') {
            // return $this->goHome();
            return $this->redirect('/user/login');
        }
        return parent::beforeAction($action);
    }
}
